package com.itzmn.newcode.offer;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

/**
 * @Author: 张梦楠
 * @Date: 2018/11/16 21:23
 * 简书：https://www.jianshu.com/u/d611be10d1a6
 * 码云：https://gitee.com/zhangqiye
 * @Description: 剑指Offer  将数组排成最小的数
 *
 *   数组所有数组成一个最小的数
 *
 *   思路：
 *    将数组的数组成一个最小数，数字的长度越短越小，同样长比较
 *    可以用string 内部比较器实现
 */
public class PrintMinNumOrder {


    public static void main(String[] args) {

        new PrintMinNumOrder().PrintMinNumber(new int[]{12,34,1,43});

    }

    public String PrintMinNumber(int [] numbers) {

        ArrayList<Integer> integers = new ArrayList<>();
        for (int i:numbers){
            integers.add(i);
        }

        Collections.sort(integers,new Comparator<Integer>(){

            @Override
            public int compare(Integer o1, Integer o2) {
                String s1 = o1+""+o2;
                String s2 = o2+""+o1;
                return s1.compareTo(s2);
            }
        });

        StringBuilder s = new StringBuilder();
        for (Integer i:integers){
          s.append(i);
        }
        System.out.println(s.toString());
        return s.toString();


    }




}
